/**
 * 
 */
package view;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JToolBar;

import control.EventosGUI;
/**
 * @author agnaldo
 *
 */
public class GuiPrincipal extends JFrame implements ActionListener {

	private ToolBarInferior toolBarInferior;
	private ToolBarSuperior toolBarSuperior;
	private static final long serialVersionUID = 1L;//isso foi solicitado pela IDE, não sei porquê!!!
	
	private JMenuBar menuBar;
	private JMenu menuFile, menuEdit, menuSettings, menuHelp;
	private JMenuItem itOpenFile, itSalveFile, itExit, itSalveClassificator;
	private JInternalFrame janelaInterna;
	private JDesktopPane theDesktop;
	
	private EventosGUI trataEventos;  //Declarando a interface que vai tratar as ações de cada botão
	
	public GuiPrincipal(EventosGUI tEvt) {
		
		super("GUI - Interactive Classification");
		trataEventos = tEvt;
		
		menuBar = new JMenuBar();
		setJMenuBar(menuBar);			//fixando barra de menu na janela
		
		//Menu File
		menuFile = new JMenu("File");
		
		itOpenFile = new JMenuItem("Open");
		itOpenFile.addActionListener(this);
		itSalveFile = new JMenuItem("Salve image");
		itSalveClassificator = new JMenuItem("Salve Classificator");
		itExit = new JMenuItem("Exit");
		itExit.addActionListener(this);
		
		menuFile.add(itOpenFile);
		menuFile.add(itSalveFile);
		menuFile.add(itSalveClassificator);
		menuFile.add(itExit);
		
		menuBar.add(menuFile);
		
		//Menu Edit
		menuEdit = new JMenu("Edit");
		menuBar.add(menuEdit);
		
		//Menu Settings
		menuSettings = new JMenu("Settings");
		menuBar.add(menuSettings);
		
		//Menu Help
		menuHelp = new JMenu("Help");
		menuBar.add(menuHelp);
		
		setToolBarSuperior(new ToolBarSuperior(tEvt)); //instanciando ToolBar via método interno espc. abaixo
		setToolBarInferior(new ToolBarInferior(tEvt));
		
		//inserindo barras de ferramentas 
		//toolBarSuperior = new ToolBarSuperior();
		getContentPane().add(toolBarSuperior, BorderLayout.NORTH);
		
		//toolBarInferior = new ToolBarInferior();
		getContentPane().add(toolBarInferior, BorderLayout.SOUTH);
		
		
		// **** Janelas Internas ****
		theDesktop = new JDesktopPane();
		add(theDesktop);
		
		//salva theDesktop na Classe dados para ser utilizado por outros métodos
		//trataEventos.setJDektopPane(theDesktop);
		
	}//fim do construtor
	
	
	/**
	 * Método para adicionar uma quantidade q de espaços em um Object Container
	 * @param Componente onde será inserido os espaços
	 * @param quantidade de espaços que devem ser inseridos
	 */
	private void incluiSeparador( JToolBar obj, int q ) {
		for (int i=0; i< q; i++)
			obj.addSeparator();
	}

	public ToolBarInferior getToolBarInferior() {
		return toolBarInferior;
	}

	public void setToolBarInferior(ToolBarInferior toolBarInferior) {
		this.toolBarInferior = toolBarInferior;
	}

	public ToolBarSuperior getToolBarSuperior() {
		return toolBarSuperior;
	}

	public void setToolBarSuperior(ToolBarSuperior toolBarSuperior) {
		this.toolBarSuperior = toolBarSuperior;
	}

	@Override
	public void actionPerformed(ActionEvent evento) {
		
		if(evento.getSource().equals((Object)itExit)){
			trataEventos.exitProgramm();	
		}
		else if (evento.getSource().equals(itOpenFile)){
				trataEventos.openImage();
		}
	}

}//fim da classe
